package br.com.vti.sisp_sicrim.antigo.controller.tela;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Sistha01
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Sistha01 {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Sistha01.jsp";
	private String op2;
	private String op3;
	private int motbxa;
	private int matric;
	private String senha;
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "matric";
	private String navegar = "";
	private Boolean temMensagem = false;
	private Result result;
	private Sessao sessao; // Classes views

	// Classes includes
	public Sistha01() {
		inicializar(false);
	}

	public Sistha01(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			op2 = "";
			op3 = "";
			motbxa = 0;
			matric = 0;
			senha = "";
			matric = sessao.getSisgsisp().getMatric();
			senha = sessao.getSisgsisp().getSenha();
		}
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		ValidarFuncao();
		if (temMensagem) {
			return false;
		}
		ValidarMatric();
		if (temMensagem) {
			return false;
		}
		ValidarOp2();
		if (temMensagem) {
			return false;
		}
		ValidarSenha();
		if (temMensagem) {
			return false;
		}
		sessao.getSisgsisp().setMatric(this.matric);
		sessao.getSisgsisp().setSenha(this.senha);
		return true;
	}

	private void ValidarFuncao() {
		// Consist�ncia F00funcao
		if (!(UtilBean.funcao.equals(UtilBean.ctt_processa) || UtilBean.funcao.equals(UtilBean.ctt_retorna))) {
			enviarMensagem(null, "");
			return;
		}
	}

	private void ValidarOp2() {
		// Consist�ncia F00OP2
		if (!UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			if (!op2.trim().equals("") && !op3.trim().equals("")) {
				enviarMensagem(null, "");
				return;
			}
		}
	}

	private void ValidarMatric() {
		// Consist�ncia F00MATRIC
		if (!UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			if (matric == 0) {
				enviarMensagem(null, "");
				return;
			}
		}
	}

	private void ValidarSenha() {
		// Consist�ncia F00SENHA
		if (!UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			if (senha.trim().equals("")) {
				enviarMensagem(null, "");
				return;
			}
		}
	}

	public String getOp2() {
		return op2;
	}

	public void setOp2(String op2) {
		this.op2 = op2;
	}

	public String getOp3() {
		return op3;
	}

	public void setOp3(String op3) {
		this.op3 = op3;
	}

	public int getMotbxa() {
		return motbxa;
	}

	public void setMotbxa(int motbxa) {
		this.motbxa = motbxa;
	}

	public int getMatric() {
		return matric;
	}

	public void setMatric(int matric) {
		this.matric = matric;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}

	public void setEnviada(boolean enviada) {
		this.enviada = enviada;

	}
}
